package br.com.rotary.utilitario;

import br.com.rotary.enums.MeioTransporte;
import br.com.rotary.enums.Status;
import br.com.rotary.enums.TipoConvidado;
import br.com.rotary.enums.TipoParticipante;
import br.com.rotary.modelo.Clube;
import br.com.rotary.modelo.Estado;
import br.com.rotary.servico.ClubeServico;
import br.com.rotary.servico.EstadoServico;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerUtilitario {

    @EJB
    EstadoServico estadoServico;
    @EJB
    ClubeServico clubeServico;

    @PostConstruct
    public void init() {
    }

    public String getMes(int mes) {

        if (mes < 0 || mes > 12) {
            return null;
        }

        List<String> meses = Arrays.asList("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");

        return meses.get(mes);
    }

    public String mes(Date data) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(data);

        return getMes(calendar.get(Calendar.MONTH));
    }

    public String mesAtual() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());

        return getMes(calendar.get(Calendar.MONTH));
    }

    public String mascaraCPF(String cpf) {
        if (cpf != null && !cpf.isEmpty()) {
            return Caracter.addMask(cpf, Caracter.cpfMask);
        }

        return "-";
    }

    public String mascaraCNPJ(String cnpj) {
        if (cnpj != null && !cnpj.isEmpty()) {
            return Caracter.addMask(cnpj, Caracter.cnpjMask);
        }

        return "-";
    }

    public List<SelectItem> getTipoParticipante() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (TipoParticipante item : TipoParticipante.values()) {
            items.add(new SelectItem(item, item.getNome()));
        }
        return items;
    }

    public List<SelectItem> getTipoConvidado() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (TipoConvidado item : TipoConvidado.values()) {
            items.add(new SelectItem(item, item.getNome()));
        }
        return items;
    }

    public List<SelectItem> getMeioTransporte() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (MeioTransporte item : MeioTransporte.values()) {
            items.add(new SelectItem(item, item.getNome()));
        }
        return items;
    }

    public List<SelectItem> getStatus() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (Status item : Status.values()) {
            items.add(new SelectItem(item, item.getNome()));
        }
        return items;
    }

    public List<Estado> autocompleteEstado(String query) {
        return estadoServico.autocomplete(query);
    }

    public List<Clube> autocompleteClube(String query) {
        return clubeServico.autocomplete(query);
    }
}
